package com.xinke.module.system.model.entity.user;

import com.xinke.component.tenant.core.db.TenantBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.xinke.component.mybatis.mybatis.core.dataobject.BaseDO;

/**
 * 菜单权限 DO
 *
 * @author yzx
 */
@TableName("system_menu")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MenuDO extends BaseDO {
    public static final Long ID_ROOT = 0L;
    @TableId(value = "menu_id")
    private Long menuId;

    @TableField("menu_parent_id")
    private Long menuParentId = 0L;

    @TableField("menu_auth_code")
    private String menuAuthCode;

    @TableField("menu_component")
    private String menuComponent;

    // ============ Meta字段部分 ============
    @TableField("meta_active_icon")
    private String metaActiveIcon;

    @TableField("meta_active_path")
    private String metaActivePath;

    @TableField("meta_affix_tab")
    private Boolean metaAffixTab = false;

    @TableField("meta_affix_tab_order")
    private Integer metaAffixTabOrder;

    @TableField("meta_badge")
    private String metaBadge;

    @TableField("meta_badge_type")
    private String metaBadgeType;

    @TableField("meta_badge_variants")
    private String metaBadgeVariants;

    @TableField("meta_hide_children_in_menu")
    private Boolean metaHideChildrenInMenu = false;

    @TableField("meta_hide_in_breadcrumb")
    private Boolean metaHideInBreadcrumb = false;

    @TableField("meta_hide_in_menu")
    private Boolean metaHideInMenu = false;

    @TableField("meta_hide_in_tab")
    private Boolean metaHideInTab = false;

    @TableField("meta_icon")
    private String metaIcon;

    @TableField("meta_iframe_src")
    private String metaIframeSrc;

    @TableField("meta_keep_alive")
    private Boolean metaKeepAlive = false;

    @TableField("meta_link")
    private String metaLink;

    @TableField("meta_max_num_of_open_tab")
    private Integer metaMaxNumOfOpenTab;

    @TableField("meta_no_basic_layout")
    private Boolean metaNoBasicLayout = false;

    @TableField("meta_open_in_new_window")
    private Boolean metaOpenInNewWindow = false;

    @TableField("meta_menu_order")
    private Integer metaMenuOrder;

    @TableField("meta_query")
    private String metaQuery;

    @TableField("meta_title")
    private String metaTitle;

    // ============ 基础字段部分 ============
    @TableField("menu_name")
    private String menuName;

    @TableField("menu_path")
    private String menuPath;

    @TableField("menu_redirect")
    private String menuRedirect;

    @TableField("menu_type")
    private String menuType;

    private Integer menuStatus;

}